package com.pan.admin.module.loanProduct.entity;

import com.pan.admin.common.annotation.Excel;
import com.pan.admin.common.core.domain.BaseEntity;
import com.pan.admin.module.area.entity.LoanProductPlanArea;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * 配置机构计划对象 loan_product_plan
 *
 * @author ts
 * @date 2023-12-27
 */
@Data
public class LoanProductPlan extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    private Long id;

    /**
     * 机构主键id
     */
    private Long loanProductId;

    /**
     * 所属机构
     */
    @Excel(name = "机构名称")
    private String productName;

    /**
     * 广告名称
     */
    @Excel(name = "广告名称")
    private String displayName;

    /**
     * 机构链接
     */
    @Excel(name = "机构链接")
    private String link;

    /**
     * 链接跳转类型(0默认跳转(无机构跳转), 1公众号跳转, 2外链跳转, 3企微跳转)
     */
    private String linkType;

    /**
     * logo
     */
    private String logoPath;

    /**
     * 计划名称
     */
    @Excel(name = "计划名称")
    private String name;

    /**
     * 机构计划结算价格
     */
    @Excel(name = "机构计划结算价格")
    private BigDecimal price;

    /**
     * 分润价格
     */
    private BigDecimal share;

    /**
     * 进量日期，（周一-周天数字分割1;2;7）
     */
    @Excel(name = "进量日期")
    private String openDates;

    /**
     * 开放时间24小时制，格式:（09:00-15:00）
     */
    @Excel(name = "开放时间")
    private String openTime;

    /**
     * 地区ids
     */
    private String areaIds;

    /**
     * 计划状态（0禁用 1启用）
     */
    @Excel(name = "计划状态", readConverterExp = "0=禁用,1=启用")
    private Long status;

    /**
     * 0（本地机构计划）， 1（全国机构计划）
     */
    @Excel(name = "机构类型", readConverterExp = "0=本地机构计划,1=全国机构计划")
    private String type;

    /**
     * 本地机构_优先(0否， 1是)
     */
    private Integer priorityLocalOrg;
    /**
     * 地区编码
     */
    private List<String> area;

    /**
     * 地区编码
     */
    private List<LoanProductPlanArea> areaList;

    /** 上限量 */
    private Integer maxLimit;

    /** 日配量 */
    private Integer todayApplyTotal;

    /** 开启计划本地库排重（0禁用 默认1启用） */
    private Integer enableFilterLocal;
    /** 开启计划md5排重（默认0禁用 1启用） */
    private Integer enableFilterMd5;
    /** 开启计划多推（0禁用 默认1启用） */
    private Integer enableMultiPush;
    /** 开启进件空号检测（默认0禁用 1启用） */
    private Integer enableApplyEmptyCheck;
    /** 开启二要素验证（默认0禁用 1启用） */
    private Integer enableApplyTwoElement;
    /** 开启三要素验证（默认0禁用 1启用） */
    private Integer enableApplyThreeElement;

    /**
     * 计划类型(默认0机构计划类型，1平台计划类型 )
     * @see com.pan.admin.module.loanProduct.enums.PlanTypeEnum
     */
    private Integer planType;

    /**
     * 接入方(0我方 1对方)
     */
    private Integer providerType;

    /**
     * 版本类型
     *
     * 忽略模式(0), 全流程(1), 半流程(2)
     */
    private Integer versionType;

    /**
     * 版本模式:(默认:0md5模式， 1手机号8位掩码模式)
     */
    private Integer versionMode;

    /**
     * 分发权重(0-10000)
     */
    private Integer weight;

    /**
     * 计划环境(0 测试环境， 默认1 正式环境)
     */
    private Integer envType;

    /** 是否对接上线 */
    private Boolean hasOnline;

    /**
     * 主体中-第三方撞库接口地址
     */
    private String apiDataExchange;
    /**
     * 主体中-进件地址
     */
    private String apiApplyUrl;

    public LoanProductPlan() {
    }

    public String getOpenDates() {
        return openDates;
    }

    public void setOpenDates(String openDates) {
        this.openDates = openDates;
    }

    public List<LoanProductPlanArea> getAreaList() {
        return areaList;
    }

    public void setAreaList(List<LoanProductPlanArea> areaList) {
        this.areaList = areaList;
    }

    public List<String> getArea() {
        return area;
    }

    public void setArea(List<String> area) {
        this.area = area;
    }

    public Integer getPriorityLocalOrg() {
        return priorityLocalOrg;
    }

    public void setPriorityLocalOrg(Integer priorityLocalOrg) {
        this.priorityLocalOrg = priorityLocalOrg;
    }

    public String getAreaIds() {
        return areaIds;
    }

    public void setAreaIds(String areaIds) {
        this.areaIds = areaIds;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getLogoPath() {
        return logoPath;
    }

    public void setLogoPath(String logoPath) {
        this.logoPath = logoPath;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setLoanProductId(Long loanProductId) {
        this.loanProductId = loanProductId;
    }

    public Long getLoanProductId() {
        return loanProductId;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setStatus(Long status) {
        this.status = status;
    }

    public Long getStatus() {
        return status;
    }


    public String getOpenTime() {
        return openTime;
    }

    public void setOpenTime(String openTime) {
        this.openTime = openTime;
    }

    public String getDisplayName() {
        return displayName;
    }

    public void setDisplayName(String displayName) {
        this.displayName = displayName;
    }

    public String getLink() {
        return link;
    }

    public void setLink(String link) {
        this.link = link;
    }

    public String getLinkType() {
        return linkType;
    }

    public void setLinkType(String linkType) {
        this.linkType = linkType;
    }

    public Integer getEnableMultiPush() {
        return enableMultiPush;
    }

    public void setEnableMultiPush(Integer enableMultiPush) {
        this.enableMultiPush = enableMultiPush;
    }


    public Boolean getHasOnline() {
        return hasOnline;
    }

    public void setHasOnline(Boolean hasOnline) {
        this.hasOnline = hasOnline;
    }

    public String getApiDataExchange() {
        return apiDataExchange;
    }

    public void setApiDataExchange(String apiDataExchange) {
        this.apiDataExchange = apiDataExchange;
    }

    public String getApiApplyUrl() {
        return apiApplyUrl;
    }

    public void setApiApplyUrl(String apiApplyUrl) {
        this.apiApplyUrl = apiApplyUrl;
    }
}
